﻿using System.Collections.ObjectModel;
using Renci.Data.Interop.OpenGIS.Sos_10;
using Renci.Data.Interop.OpenGIS.Swe_101;
using Renci.Data.Interop.OpenGIS.SensorML_101;
using Renci.Data.Interop.OpenGIS.Om_10;
namespace Renci.Data.Interop.OpenGIS.Gml
{
    /// <summary>
    /// An abstract superclass for all GML objects.
    /// </summary>
    /// <remarks>The abstract element gml:AbstractGML is "any GML object having identity". It acts as the head of an XML Schema substitution group, which may include any element which is a GML feature, or other object, with identity. This is used as a variable in content models in GML core and application schemas. It is effectively an abstract superclass for all GML objects.</remarks>
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ArrayType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BaseStyleDescriptorType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GraphStyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopologyStyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(LabelStyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GeometryStyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(FeatureStyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractStyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(StyleType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTopologyType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopoComplexType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopoVolumeType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopoSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopoCurveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopoPointType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTopoPrimitiveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TopoSolidType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(NodeType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EdgeType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(FaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ProcessMethodType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompositeValueType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ValueArrayType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimeSliceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MovingObjectStatusType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractFeatureType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObservationOfferingBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObservationOfferingType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObservationCollectionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractSmlType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractProcessType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDerivableProcessType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DataSourceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractRestrictedProcessType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractPureProcessType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ProcessChainType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ProcessModelType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(Renci.Data.Interop.OpenGIS.Om_10.ObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DirectedObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DirectedObservationAtDistanceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDiscreteCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(RectifiedGridCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GridCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiSolidCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiSurfaceCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiCurveCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiPointCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractContinuousCoverageType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DynamicFeatureType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BoundedFeatureType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractFeatureCollectionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(FeatureCollectionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DynamicFeatureCollectionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDataComponentType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDataArrayType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DataArrayType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDataRecordType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractConditionalType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ConditionalValueType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ConditionalDataType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(SimpleDataRecordType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DataRecordType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeometryType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GridType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(RectifiedGridType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GeometricComplexType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeometricAggregateType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiPolygonType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiLineStringType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiSolidType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiCurveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiPointType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultiGeometryType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractRingType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(RingType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(LinearRingType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeometricPrimitiveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractSolidType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompositeSolidType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(SolidType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompositeSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OrientableSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(SurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TriangulatedSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TinType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PolyhedralSurfaceType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PolygonType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractCurveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompositeCurveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OrientableCurveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CurveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(LineStringType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PointType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DefinitionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PhenomenonType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompoundPhenomenonType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PhenomenonSeriesType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompositePhenomenonType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ConstrainedPhenomenonType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeCalendarEraType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeOrdinalEraType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimeReferenceSystemType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeClockType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeCalendarType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeOrdinalReferenceSystemType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeCoordinateSystemType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeneralOperationParameterType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OperationParameterGroupBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OperationParameterGroupType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OperationParameterBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OperationParameterType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OperationMethodBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(OperationMethodType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractCoordinateOperationBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractCoordinateOperationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeneralTransformationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TransformationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeneralConversionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ConversionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PassThroughOperationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ConcatenatedOperationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EllipsoidBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EllipsoidType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PrimeMeridianBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PrimeMeridianType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDatumBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractDatumType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GeodeticDatumType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TemporalDatumBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TemporalDatumType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(VerticalDatumType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ImageDatumType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EngineeringDatumType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CoordinateSystemAxisBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CoordinateSystemAxisType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractCoordinateSystemBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractCoordinateSystemType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObliqueCartesianCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CylindricalCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PolarCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(SphericalCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(UserDefinedCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(LinearCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TemporalCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(VerticalCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CartesianCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EllipsoidalCsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractReferenceSystemBaseType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractReferenceSystemType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TemporalCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ImageCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EngineeringCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractGeneralDerivedCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DerivedCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ProjectedCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GeocentricCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(VerticalCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GeographicCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompoundCrsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(UnitDefinitionType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ConventionalUnitType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DerivedUnitType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BaseUnitType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DefinitionProxyType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DictionaryType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimeObjectType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeAggregateType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimeComplexType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeGridType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeIntervalGridType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeInstantGridType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeGeometricComplexType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeTopologyComplexType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimePrimitiveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimeTopologyPrimitiveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeEdgeType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeNodeType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(AbstractTimeGeometricPrimitiveType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimePeriodType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeInstantType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BagType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ElementCoverageObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeSeriesObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PointCoverageObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DiscreteCoverageObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TimeSeriesObsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(PointCoverageObsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(DiscreteCoverageObsType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CalculationProcessType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObservationProcessType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(InstrumentType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ObservationType))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CategoryObservation))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(ComplexObservation))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CountObservation))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(GeometryObservation))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MeasurementObservation))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TemporalObservation))]
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TruthObservation))]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.opengis.net/gml")]
    public abstract class AbstractGMLType
    {
        private Collection<MetaDataPropertyType> _metaDataProperties = new Collection<MetaDataPropertyType>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("metaDataProperty")]
        public Collection<MetaDataPropertyType> MetaDataProperties
        {
            get
            {
                return this._metaDataProperties;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("description")]
        public StringOrRefType Description
        {
            get;
            set;
        }

        private Collection<CodeType> _names = new Collection<CodeType>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("supportedSRS", Type = typeof(SupportedSRS))]
        [System.Xml.Serialization.XmlElementAttribute("srsName", Type = typeof(SrsName))]
        [System.Xml.Serialization.XmlElementAttribute("ellipsoidName", Type = typeof(EllipsoidName))]
        [System.Xml.Serialization.XmlElementAttribute("meridianName", Type = typeof(MeridianName))]
        [System.Xml.Serialization.XmlElementAttribute("datumName", Type = typeof(DatumName))]
        [System.Xml.Serialization.XmlElementAttribute("csName", Type = typeof(CsName))]
        [System.Xml.Serialization.XmlElementAttribute("groupName", Type = typeof(GroupName))]
        [System.Xml.Serialization.XmlElementAttribute("parameterName", Type = typeof(ParameterName))]
        [System.Xml.Serialization.XmlElementAttribute("coordinateOperationName", Type = typeof(CoordinateOperationName))]
        [System.Xml.Serialization.XmlElementAttribute("methodName", Type = typeof(MethodName))]
        [System.Xml.Serialization.XmlElementAttribute("name", Type = typeof(CodeType))]
        public Collection<CodeType> Names
        {
            get
            {
                return this._names;
            }
        }

        /// <summary>
        /// Supports provision of a handle for the XML element representing a GML Object. Its use is mandatory for all GML objects. It is of XML type ID, so is constrained to be unique in the XML document within which it occurs.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("id", Form = System.Xml.Schema.XmlSchemaForm.Qualified, DataType = "ID")]
        public string Id
        {
            get;
            set;
        }
    }
}
